/*
 * Copyright (c) 2018-2999 湖南洛云网络科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.dao;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yami.shop.bean.app.dto.ShopHeadInfoDto;
import com.yami.shop.bean.model.ShopDetail;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yami.shop.common.util.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author LGH
 */
public interface ShopDetailMapper extends BaseMapper<ShopDetail> {

    /**
     * 根据店铺的手机号（登陆账号），获取店铺信息
     *
     * @param mobile 手机号
     * @return 店铺信息
     */
    ShopDetail getShopByMobile(@Param("mobile") String mobile);

    /**
     * 修改用户密码
     * @param username 用户名称/账号
     * @param newPassword 新密码
     */
    void updatePasswordByUserName(@Param("username") String username, @Param("newPassword") String newPassword);

    /**
     * 获取用户店铺信息
     * @param userId 用户id
     * @return 店铺信息
     */
    ShopDetail getShopDetailByUserId(@Param("userId") String userId);

    /**
     * 修改店铺状态
     * @param shopId 店铺id
     * @param status 状态
     */
    void updateStatus(@Param("shopId") Long shopId, @Param("status") Integer status);

    /**
     * 热搜店铺信息列表
     * @return 热搜店铺信息列表
     */
    List<ShopHeadInfoDto> listHotShopsHead();

    /**
     * 通过经纬度获取距离
     * @param lat 纬度
     * @param lng 经度
     * @param shopId 店铺id
     * @return 距离
     */
    double getDistance(@Param("lat") Double lat, @Param("lng") Double lng, @Param("shopId") Long shopId);

    /**
     * 条件查询，分页获取店铺头部信息
     * @param page 分页参数
     * @param shopHeadInfoDto 条件参数
     * @return 分页店铺头部信息
     */
    Page<ShopHeadInfoDto> searchShops(@Param("page") PageParam<ShopHeadInfoDto> page, @Param("shopHeadInfoDto") ShopHeadInfoDto shopHeadInfoDto);

    /**
     * 获取店铺详情
     * @param shopId 店铺id
     * @return 店铺信息
     */
    ShopDetail selectShopDetailById(@Param("shopId") Long shopId);
}
